import 'dart:convert';

void main() {
  // 1. 主构造函数-创建一个User对象
  User user = User(name: '张三', age: 20, sex: '男');
  print('姓名：${user.name}，年龄：${user.age}，性别：${user.sex}');

  // 2.实际开发中

  //接口获取的数据
  String jsonStr = '{"name":"李四","age":26,"sex":"男"}';
  // 将json字符串转为Map
  Map mapData = json.decode(jsonStr);
  print('姓名：${mapData['name']}，年龄：${mapData['age']}，性别：${mapData['sex']}');

  //次构造函数 -map数据转对象
  User user2 = User.fromMap(mapData);
  print('姓名：${user2.name}，年龄：${user2.age}，性别：${user2.sex}');
}

class User {
  // 使用可选参数，可以不传递参数
  // String? name;
  // int? age;
  // String? sex;

  //使用late 关键字，可以延迟初始化变量
  late String name;
  late int age;
  late String sex;

  //主构造函数
  User({required this.name, required this.age, required this.sex});

  //命名构造函数
  User.fromMap(Map map) {
    this.name = map['name'];
    this.age = map['age'];
    this.sex = map['sex'];
  }
}
